package com.yangfan.thread.thread_wangwenjun03;

/**
 * @description: 因为 Thread 的 stop 方法已经不推荐使用了，所以需要自己进行停止该线程
 * @author: yangfan
 * @date: Created in 2020/1/26 0026 9:46
 * @modified By:
 */
public class ThreadStopSwitch {

    /**
     * 以开关的方式停止线程
     */

    public static void main(String[] args) {

        ThreadTask t = new ThreadTask();
        t.start();

        try {
            Thread.sleep(3_000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        t.closedThread();
    }

    private static class ThreadTask extends Thread{

        /**
         * 这个 {@link #flag} 属性的 volatile 意义不大 volatile 的意义在于 线程可见性。
         * 如果不使用 volatile 修饰 只会在成一点点延迟 关闭开关
         */
        private volatile boolean flag = true;//开关

        @Override
        public void run() {
            while (flag){
                ///here is the task
            }
        }

        /**
         * 关闭线程的方法
         */
        protected void closedThread(){
            flag = false;
            System.out.println("关闭了");
        }

    }
}
